/*
 * OpenDisc.c
 *
 *  Created on: 14/09/2011
 *      Author: ${Petris-Normandia}
 */

#define __USE_LARGEFILE
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64
#include "DiscPlanning.h"

//abre el archivo disco
void openDisc (char* path){

	struct stat status;
	int control;

	lstat(path,&status);
	Size_Disk=status.st_size - 0x100000000000LL;
	fileDescriptor=open(path,O_RDWR);


		/*aca esta la constante de tu filesystem,el path,
		pero me la vas a pasar como parametro*/

		if (fileDescriptor == -1) {
			if (parametros->log==1){
			log("Planificador de Disco","log.txt","E","Error de archivo no encontrado\n");
			}
			exit(EXIT_FAILURE);
					}

		princArchivo = mmap(NULL, Size_Disk, PROT_READ | PROT_WRITE, MAP_SHARED,
								fileDescriptor, 0);
		if (princArchivo == MAP_FAILED){
					if (parametros->log ==1)
					log("Planificador de Disco","log.txt","E","Error de mapeo del archivo\n");
		}
		control = posix_madvise(princArchivo, Size_Disk, POSIX_MADV_RANDOM);
					switch (control) {
					case EINVAL:
						if (parametros->log ==1)
						log("Planificador de Disco","log.txt","E","The value of advice is invalid\n");
						break;
					case ENOMEM:
						if (parametros->log ==1)
						log("Planificador de Disco","log.txt","E","out of range memory\n");
						break;
					}
}
